package models

import "errors"

// LianMerchantRate 联动商户费率详细表
type LianMerchantRate struct {
	ID                          uint    `json:"id" form:"id" gorm:"primary_key;AUTO_INCREMENT;comment:'id'"`
	MerchantId                  int     `json:"merchant_id" gorm:"comment:'商户id'"`
	LDMerchantId                string  `json:"ld_merchant_id" gorm:"comment:'联动商户id'"`
	TransType                   int     `json:"trans_type" gorm:"comment:'1-微信；2-支付宝；3-云闪付1000以下（包含1000）；4-云闪付1000以上（不包含1000）5-聚分期； 6-银行卡刷卡借记； 8-银行卡刷卡贷记；'"`
	MerchantMaxD1Rate           float32 `json:"merchant_max_d1_rate" gorm:"type:decimal(10,6);comment:'商户签约费率区间大(交易费率)'"`
	MerchantMinD1Rate           float32 `json:"merchant_min_d1_rate" gorm:"type:decimal(10,6);comment:'商户签约费率区间小(交易费率)'"`
	PosFeeLimitMax              float32 `json:"pos_fee_limit_max" gorm:"type:decimal(10,6);comment:'商户手续费封顶值区间大，单位：元，保留2位小数仅当transType=6-银行卡刷卡借记时有值'"`
	PosFeeLimitMin              float32 `json:"pos_fee_limit_min" gorm:"type:decimal(10,6);comment:'商户手续费封顶值区间小，单位：元，保留2位小数仅当transType=6-银行卡刷卡借记时有值'"`
	MerchantInstallmentRateList string  `json:"merchant_installment_rate_list" gorm:"comment:'聚分期分期费率列表（商户贴息）商户开通聚分期权限后才能配置分期费率'"`
	BankNm                      string  `json:"bank_nm" gorm:"comment:'分期发卡行简码如：ICBC'"`
	InstalmentFeeRateList       string  `json:"instalment_fee_rate_list" gorm:"comment:'分期费率列表'"`
	InstallmentNm               string  `json:"installment_nm" gorm:"comment:'分期期数：3，6，9，12，18，24，36'"`
	InstallmentRateMax          float32 `json:"installment_rate_max" gorm:"comment:'分期费率区间大，单位：%，最多支持3位小数'"`
	InstallmentRateMin          float32 `json:"installment_rate_min" gorm:"comment:'分期费率区间小，单位：%，最多支持3位小数'"`
}

// LianMerchantRateAdd 添加费率详细
func LianMerchantRateAdd(rate *LianMerchantRate) error {
	var model LianMerchantRate
	db.Model(&LianMerchantRate{}).Where("merchant_id = ? AND trans_type = ?", rate.MerchantId, rate.TransType).Scan(&model)
	if model.ID != 0 {
		return errors.New("该商户已添加该交易类型的费率")
	}
	db.Create(rate)
	return nil
}
